package com.atde._05_behavioral_design_patterns.iterator;


import java.util.Iterator;
import java.util.List;

/**
 * @BelongsProject: hsp_java_design_mode
 * @BelongsPackage: com.atde._05_behavioral_design_patterns.iterator
 * @Author: Del
 * @CreateTime: 2025-06-27  11:35
 * @Description: 迭代器模式：具体实现类，用于遍历 Department 列表
 * @Version: 1.0
 */
public class InfoColleageIterator implements Iterator {

    // 使用List的方式进行存储
    private List<Department> departmentsList;

    // 当前遍历索引的位置，初始值为-1表示尚未开始遍历
    private int index = -1;

    public InfoColleageIterator(List<Department> departmentsList) {
        this.departmentsList = departmentsList;
    }

    /*** 
     * @author: Del
     * @date: 2025/6/27 14:28
     * @return boolean 如果存在下一个元素，则返回true，否则返回false
     * @description: 判断当前迭代器是否还有下一个元素，同时将索引移动到下一个有效位置
     */
    @Override
    public boolean hasNext() {
        if (index >= departmentsList.size() - 1) {
            return false;
        } else {
            index++;
            return true;
        }
    }

    /***
     * @author: Del
     * @date: 2025/6/27 14:29
     * @return 返回当前索引位置的元素
     * @description: 获取当前索引位置的元素，并将其作为下一个元素返回
     */
    @Override
    public Object next() {
        return departmentsList.get(index);
    }

    /**
     * 不支持移除操作，该方法为空实现
     * 因为当前迭代器不需要移除元素，所以该方法不做任何操作
     */
    @Override
    public void remove() {}
}
